# 1.yield from 的基本使用，生成器内部嵌套生成器的使用。
# 被嵌套的生成器
# def magic_num(num):
#     for i in range(3):
#         yield (i+1) ** num
#
# # 内部使用生成器的生成器
# def magic_result():
#     yield from magic_num(2)
#     yield from magic_num(3)
#
# for item in magic_result():
#     print(item)


# 2.yield ，send的使用
def magic_send_num():
    res = yield 'first result string'
    while True:
        res = yield 2 ** res
        if res is None:
            break

m = magic_send_num()
print(next(m))

print(m.send(2))

print(m.send(3))

print(m.send(None))